/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package shaman.storage.api;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.List;
import java.util.Map;
import shaman.storage.common.FileProperties;

/**
 *
 * @author Shaman
 */
public interface Backup extends Configurable {

    Date getBackupDate()
            throws IOException;
    /**
     * Список имён файлов в хранилище на заданную дату
     * @return
     */
    Iterable<String> getFileList()
            throws IOException;
    /**
     * Свойства файла
     */
    FileProperties getFileProperties(String fileName)
            throws IOException, FileNotFoundException;

    InputStream getFileData(String fileName)
            throws IOException, FileNotFoundException;

    OutputStream createFile(String fileName, Map<String, String> properties)
            throws IOException;

    List<Filter> getFilters();

    void finish()
            throws IOException;

}
